package com.mgq.algorithm.greedy;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author MaGuangQi
 * 会议问题
 * @date 2022-01-05 16:53
 **/
public class MeetProgram {
    /**
     *
     * @param programs 所有会议
     * @param timePoint 当前时间点(现在来到的时间点)
     * @return
     */
    public int arrage(Program[] programs, int timePoint) {
        int result=0;
        Arrays.sort(programs,new ProgramComparator());
        for (int i = 0; i < programs.length; i++) {
            if (timePoint <= programs[i].start) {
                result++;
                timePoint = programs[i].end;
            }
        }
        return result;
    }
}
/**
 * 会议问题
 * 学校的小礼堂每天都会有许多活动，有时间这些活动的计划时间会发生冲突，需要选择出一些活动进行举办。
 * 小刘的工作就是安排学校小礼堂的活动，每个时间最多安排一个活动。现在小刘有一些活动计划的时间表，
 * 他想尽可能的安排更多的活动，请问他该如何安排。
 */
class Program {
    //会议的开始时间
    int start;
    //会议的结束时间
    int end;

}

/**
 * 比较器 按照会议的结束时间排序(谁的结束时间早,谁就在前面)
 */
class ProgramComparator implements Comparator<Program> {

    @Override
    public int compare(Program o1, Program o2) {
        //按照结束时间排序
        return o1.end-o2.end;
    }
}
